// 登录注册控制器

const User = require("../models/User");
const jwt = require("jsonwebtoken");
const bcrypt = require("bcrypt");

async function register(req, res) {
    const { username, password, nickname } = req.body;

    try {
        const existingUser = await User.findOne({ where: { username } });
        if (existingUser) {
            return res.status(400).json({ message: '用户名已存在' });
        }

        // 对密码进行加密处理
        const hashedPassword = await bcrypt.hash(password, 10);

        // 创建新用户
        const user = await User.create({ username, password: hashedPassword, nickname });

        res.status(201).json({msg:"用户注册成功"})

    } catch (error) { 
        res.status(400).json({ message: error.message });
    }
}

// 登录
async function login(req, res) {
    const { username, password } = req.body;
    try{
        // 检查用户是否存在
        const user = await User.findOne({ where: { username } });
        if (!user) {
            return res.status(400).json({ message: '用户不存在' });
        }

        // 检查密码是否正确
        const isPasswordValid = await bcrypt.compare(password, user.password);
        if (!isPasswordValid) {
            return res.status(400).json({ message: '密码错误' });
        }

        // 更新用户的最后登录时间
        user.lastOnlineTime = new Date();
        await user.save();

        // 生成 token
        const token = jwt.sign({ id: user.id }, "xxx-your-secret-key", { expiresIn: '24h' });
        res.json({ token,acount: user.username,nickname: user.nickname,userId: user.id });
    }catch(error){
        res.status(400).json({ message: error.message });
    }
}

module.exports = { register, login };
